package net;

// 翻译服务器（英译汉）
// 核心其实和回显服务器差不多，差别只是在process根据请求计算响应的逻辑，那就直接继承回显服务器，然后再重写process方法就行

import java.io.IOException;
import java.net.SocketException;
import java.util.HashMap;
import java.util.Map;

public class UdpTranslateServer extends UdpEchoServer {
    // 翻译是啥？ 本质上就是key找到value
    private Map<String, String> dict = new HashMap<>(); // HashMap不排序

    // 构造方法中调用父类的构造方法
    public UdpTranslateServer(int port) throws SocketException {
        super(port);

        // 这里直接初始化翻译锁支持的映射
        dict.put("cat","小猫");
        dict.put("dog","小狗");
        dict.put("rabbit","小兔子");
        // 可以添加很多内容！
        // 其实类似于有道这样的词典也是如此，只不过是其有一个很大的哈希表
    }

    // 重写一下process方法,实现查询哈希表的操作

    @Override
    public String process(String request) {
        return dict.getOrDefault(request,"sorry 该词在词典中暂未收录");
        // 设置默认值（也就是说如果key没有找到就返回默认值）
        // 如果找到key 就返回对应的value
    }

    // start方法和父类完全一样，就不用重写了

    // 写一下main方法
    public static void main(String[] args) throws IOException {
        UdpTranslateServer server = new UdpTranslateServer(9090);
        server.start();
    }
}
